﻿/**********************************************************************
 * @file   OperatorsSpectraCouplingLossFactor.h
 * @brief  频谱-耦合损耗因子谱操作器
 * @author BaGuijun (baguijun@163.com)
 * @date   2024-12-05
 *********************************************************************/
#ifndef _OperatorsSpectraCouplingLossFactor_H
#define _OperatorsSpectraCouplingLossFactor_H

#include "FITK_Kernel/FITKCore/FITKOperatorRepo.h"
#include "OperatorsInterface/OperAbstractSpectra.h"

namespace Acoustics {
    class FITKAcousticsSpectraManager;
}

namespace OperModel
{
    /**
     * @brief  频谱-耦合损耗因子谱操作器
     * @author BaGuijun (baguijun@163.com)
     * @date   2024-12-05
     */
    class OperatorsSpectraCouplingLossFactor : public EventOper::OperAbstractSpectra
    {
        Q_OBJECT;
    public:
        /**
         * @brief    构造函数
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-12-05
         */
        OperatorsSpectraCouplingLossFactor();
        /**
         * @brief    析构函数
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-12-05
         */
        virtual ~OperatorsSpectraCouplingLossFactor() = default;
        /**
        * @brief    创建频谱
        * @author   BaGuijun (baguijun@163.com)
        * @date     2024-12-06
        */
        virtual void createSpectra() override;
        /**
         * @brief    复制频谱
         * @param[i] id          材料id
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-12-06
         * @param matID
         */
        virtual void duplicateSpectra(const int id) override;
        /**
         * @brief    编辑频谱
         * @param[i] id          材料id
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-12-06
         */
        virtual void editSpectra(const int id) override;
        /**
         * @brief   删除频谱
         * @param[i]id          材料id
        * @author   BaGuijun (baguijun@163.com)
        * @date     2024-12-06
         */
        virtual void removeSpectra(const int id) override;
        /**
         * @brief    更新笔记
         * @param[i] id          频谱id
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-12-06
         */
        virtual void editNotes(const int id) override;
    protected:
        /**
         * @brief  频谱管理器
         * @author BaGuijun (baguijun@163.com)
         * @date   2024-12-06
         */
        Acoustics::FITKAcousticsSpectraManager* _spectraManager = nullptr;
    };

    // 按钮注册相关操作
    Register2FITKOperatorRepo(OperatorsSpectraCouplingLossFactor, OperatorsSpectraCouplingLossFactor);
}

#endif
